"""
密码工具类：使用bcrypt进行密码加密和验证
"""
import bcrypt


def hash_password(password: str) -> str:
    """
    对密码进行哈希加密
    :param password: 明文密码
    :return: 加密后的密码
    """
    # 生成salt并加密
    salt = bcrypt.gensalt()
    hashed = bcrypt.hashpw(password.encode('utf-8'), salt)
    return hashed.decode('utf-8')


def verify_password(plain_password: str, hashed_password: str) -> bool:
    """
    验证密码
    :param plain_password: 明文密码
    :param hashed_password: 加密后的密码
    :return: 是否匹配
    """
    return bcrypt.checkpw(
        plain_password.encode('utf-8'),
        hashed_password.encode('utf-8')
    )

